# Bullet.gd
extends Area2D

@export var speed = 500.0 # 子弹的移动速度，可以在检查器中调整
var direction = Vector2.ZERO # 子弹的移动方向

func _ready():
	# 设置子弹的生命周期（例如，2秒后自动消失）
	# 如果子弹没有碰到任何东西，它也应该在一定时间后销毁
	var timer = Timer.new()
	timer.wait_time = 10.0 # 2秒后
	timer.one_shot = true # 只计时一次
	timer.autostart = true # 自动开始计时
	timer.timeout.connect(on_timeout) # 连接超时信号回调函数
	add_child(timer)

func _physics_process(delta: float):
	# 沿着 direction 向量移动子弹
	# delta 是帧之间的时间，用于确保移动速度与帧率无关
	position += direction * speed * delta

func on_timeout():
	# 子弹超时，销毁自身
	queue_free()

# 当子弹进入另一个 Area2D 或 Body2D (例如敌人) 时触发
func _on_area_entered(area: Area2D):
	# 也可以处理子弹击中其他 Area2D 的情况
	# print("子弹进入区域：", area.name)
	pass # 暂时不做处理，或者根据需要添加逻辑


func _on_body_shape_entered(body_rid: RID, body: Node2D, body_shape_index: int, local_shape_index: int) -> void:
	print("子弹击中：", body.name)
	# 在这里处理子弹击中敌人的逻辑，例如：
	if body.has_method("take_damage"):
		body.take_damage(10) # 假设敌人有 take_damage 方法
	queue_free() # 击中后销毁子弹
